<?php

class Helper
{
    private function dozens($so, $daydu)
    {
        $mangso = array('Không', 'Một', 'Hai', 'Ba', 'Bốn', 'Năm', 'Sáu', 'Bảy', 'Tám', 'Chín');
        $chuoi = "";
        $chuc = (int)floor($so / 10);
        $donvi = $so % 10;
        if ($chuc > 1) {
            $chuoi = " " . $mangso[$chuc] . " Mươi";
            if ($donvi == 1) {
                $chuoi .= " Mốt";
            } elseif ($donvi > 1) {
                $chuoi .= " " . $mangso[$donvi];
            }
        } elseif ($chuc == 1) {
            $chuoi = " Mười";
            if ($donvi == 1) {
                $chuoi .= " Một";
            } elseif ($donvi > 1) {
                $chuoi .= " " . $mangso[$donvi];
            }
        } elseif ($daydu && $donvi > 0) {
            $chuoi = " Lẻ";
        }
        if ($donvi == 5 && $chuc > 0) {
            $chuoi .= " Lăm";
        } elseif ($donvi > 0 && $chuc == 0) {
            $chuoi .= " " . $mangso[$donvi];
        }
        return $chuoi;
    }

    private function block($so, $daydu)
    {
        $mangso = array('Không', 'Một', 'Hai', 'Ba', 'Bốn', 'Năm', 'Sáu', 'Bảy', 'Tám', 'Chín');
        $chuoi = "";
        $tram = (int)floor($so / 100);
        $so = $so % 100;
        if ($daydu || $tram > 0) {
            $chuoi = " " . $mangso[$tram] . " Trăm";
            $chuoi .= $this->dozens($so, true);
        } else {
            $chuoi = $this->dozens($so, false);
        }
        return $chuoi;
    }

    private function millions($so, $daydu)
    {
        $chuoi = "";
        $trieu = floor($so / 1000000);
        $so = $so % 1000000;
        if ($trieu > 0) {
            $chuoi = $this->block($trieu, $daydu) . " Triệu";
            $daydu = true;
        }
        $nghin = floor($so / 1000);
        $so = $so % 1000;
        if ($nghin > 0) {
            $chuoi .= $this->block($nghin, $daydu) . " Nghìn";
            $daydu = true;
        }
        if ($so > 0) {
            $chuoi .= $this->block($so, $daydu);
        }
        return $chuoi;
    }

    public static function number($so)
    {
        $mangso = array('Không', 'Một', 'Hai', 'Ba', 'Bốn', 'Năm', 'Sáu', 'Bảy', 'Tám', 'Chín');
        if ($so == 0) return $mangso[0];
        $chuoi = "";
        $hauto = "";
        do {
            $ty = $so % 1000000000;
            $so = floor($so / 1000000000);
            if ($so > 0) {
                $chuoi = self::millions($ty, true) . $hauto . $chuoi;
            } else {
                $chuoi = self::millions($ty, false) . $hauto . $chuoi;
            }
            $hauto = " Tỷ";
        } while ($so > 0);
        return $chuoi;
    }

    public static function unit($unit)
    {
        switch ($unit) {
            case 'quyen50':
                return 'Quyển';
                break;
            case 'quyen100':
                return 'Quyển';
                break;
            case 'so':
                return 'Số';
                break;
            case 'thung':
                return 'Thùng';
                break;
            default:
                return '';
                break;
        }
    }

    public static function quantity_format($quantity)
    {
        $string = '';
        for ($j = 0; $j <= (7 - strlen($quantity)); $j++) {
            $string .= '0';
        }
        $string .= $quantity;
        return $string;
    }

    public static function bowel($bowel)
    {
        switch ($bowel) {
            case 'baibang':
                return 'Bãi Bằng';
                break;
            case 'cacbon':
                return 'Cacbon';
                break;
            case 'offset':
                return 'Offset';
                break;
            default:
                return '';
                break;
        }
    }

    public static function quantityPrint($a, $b, $unit)
    {
        $ret = new stdClass;
        switch ($unit) {
            case 'quyen50': {
                $ret->f = ($a + 49) / 50;
                $ret->t = $b / 50;
                break;
            }
            case 'quyen100': {
                $ret->f = ($a + 99) / 100;
                $ret->t = $b / 100;
                break;
            }
        }
        return $ret;
    }

    public static function coverPrint($i)
    {
        $i1 = $i * 50 - 49;
        $i2 = $i * 50;
        $rs = new stdClass;
        switch (strlen($i1)) {
            case 1:
                $rs->sotruoc = '000000' . $i1;
                $rs->sosau = '00000' . $i2;
                break;
            case 2:
                $rs->sotruoc = '00000' . $i1;
                $rs->sosau = '0000' . $i2;
                break;
            case 3:
                $rs->sotruoc = '0000' . $i1;
                if ($i2 == 1000) {
                    $rs->sosau = '000' . $i2;
                } else {
                    $rs->sosau = '0000' . $i2;
                }
                break;
            case 4:
                $rs->sotruoc = '000' . $i1;
                if ($i2 == 10000) {
                    $rs->sosau = '00' . $i2;
                } else {
                    $rs->sosau = '000' . $i2;
                }
                break;
            case 5:
                $rs->sotruoc = '00' . $i1;
                if ($i2 == 100000) {
                    $rs->sosau = '0' . $i2;
                } else {
                    $rs->sosau = '00' . $i2;
                }
                break;
            case 6:
                $rs->sotruoc = '0' . $i1;
                if ($i2 == 1000000) {
                    $rs->sosau = '' . $i2;
                } else {
                    $rs->sosau = '0' . $i2;
                }
                break;
            case 7:
                $rs->sotruoc = '' . $i1;
                $rs->sosau = '' . $i2;
                break;
        }
        if ($i < 10) {
            $rs->quyenso = '0' . $i;
        } else {
            $rs->quyenso = $i;
        }
        return $rs;
    }
}